package com.turing.post.cardmanagement.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 卡种类管理
 * 
 * @author YangShuo
 * 
 */

@Remote
@Local
public interface CardClassicDao {
	/**
	 * 根据CardClassicId查询
	 * 
	 * @param CardClassicId
	 *            卡种类ID
	 * @return CardClassic对象
	 */
	public CardClassic getCardClassicByCardClassicId(BigInteger CardClassicId);

	/**
	 * 根据发卡商，是否充值，是否实名综合查询
	 * 
	 * @param IssueCompanyNo
	 * @param allowdeposit
	 * @param mediatype
	 * @param isrealname
	 * @return List<CardClassic>
	 */
	public List<CardClassic> getCardClassicListByCondition(
			PCPSWebInput input, String allowdeposit,
			String isrealname, Integer page);

	/**
	 * 取某发卡商下的所有卡种类列表
	 * 
	 * @param issueCompanyNo
	 * @return
	 */
	public List<CardClassic> getAllCardClassicByIssueCompanyNo(
			String issueCompanyNo);

	/**
	 * 新增卡种类
	 * 
	 * @param CardClassic
	 *            对象
	 * @throws PCPSApplicationException
	 */
	public void insertCardClassic(CardClassic CardClassic)
			throws PCPSApplicationException;

	/**
	 * 删除卡种类
	 * 
	 * @param CardClassicId
	 *            卡种类ID
	 * @throws PCPSApplicationException
	 */
	public void deleteCardClassic(BigInteger CardClassicId)
			throws PCPSApplicationException;

	/**
	 * 修改卡种类
	 * 
	 * @param CardClassic
	 *            对象
	 * @throws PCPSApplicationException
	 */
	public void updateCardClassic(CardClassic CardClassic)
			throws PCPSApplicationException;

	/**
	 * 根据卡种类ID查询卡种类锁表
	 * 
	 * @param CardClassicId
	 *            卡种类ID
	 * @return CardClassic对象
	 * @throws PCPSApplicationException
	 */
	public CardClassic getCardClassicByForUpdate(BigInteger CardClassicId)
			throws PCPSApplicationException;

	/**
	 * 根据发卡商，是否充值，是否实名综合查询记录条数
	 * 
	 * @param IssueCompanyNo
	 * @param allowdeposit
	 * @param mediatype
	 * @param isrealname
	 * @return
	 */
	public Integer getCardClassicCountByIssueCompanyNo(PCPSWebInput input,
			String allowdeposit, String isrealname);

	/**
	 * 根据卡批次号查询卡种类
	 * 
	 * @param batchNo
	 * @return
	 */
//	public CardClassic getCardClassicByBatchNo(String batchNo);
	
	/**
	 * 卡种类MAP
	 * @param input
	 * @return
	 */
	public List<CardClassic> getCardClassicHashMap(PCPSWebInput input);
	/**
	 * 验证卡种类名称不重复
	 * @param cardClassicName
	 *               卡种类名称
	 * @return
	 */
	public Integer IsCardClassicName(String issuecompanyno,String cardClassicName,BigInteger classid);
	/**
	 * 根据发卡商号和明成检索
	 */
	public String getClassicId(String issuecompanyno,String cardClassicName);
	/**
	 * 新增卡种类---迁移用
	 * 
	 * @param CardClassic
	 *            对象
	 * @throws PCPSApplicationException
	 */
	public String insertCardClassic_Qy(CardClassic CardClassic)
			throws PCPSApplicationException;
}
